#ifndef __COMPONENT_ANTI_CHEAT_H__
#define __COMPONENT_ANTI_CHEAT_H__

#include "Component.hpp"
#include "Engine/Vector3.hpp"

using namespace PocketSurvival::Engine;

namespace PocketSurvival
{
    struct ComponentPlayer;

    struct ComponentAntiCheat : public Component
    {
        ComponentPlayer *componentPlayer;
        // 上一次的速度
        Vector3 lastVelocity;
        // 上一次的位置
        Vector3 lastPosition;

        // 异常次数
        uint32_t numberOfAnomalies;
        // 允许异常的时间
        float allowAnomaliesTime;
        // 异常清理时间
        float anomaliesClearTime;
        // 异常等级，异常等级超过3级确认是作弊开挂的
        uint8_t anomaliesLevel;
        // 确认是否作弊
        bool isCheat;

		virtual const std::string &getName() const override;
        static const std::string &GetName();
        virtual void load(const nlohmann::json &jsonData) override;
        virtual void save(nlohmann::json &jsonData) override;
        virtual void saveToMsgJson(nlohmann::json &jsonData) override;
    };
    
}

#endif